<?php


if (!defined('IN_SEXMALL'))
{
	die('Hacking attempt');
}

/**
 * 获取服务器时间
 */
function local_time()
{
	return MInterface::$time_offset + $_SERVER['REQUEST_TIME'];
}


/**
 * 获得服务器的时区
 *
 * @return  integer
 */
function server_timezone()
{
	if (function_exists('date_default_timezone_get'))
	{
		return date_default_timezone_get();
	}
	else
	{
		return date('Z') / 3600;
	}
}


/**
 *  生成一个用户自定义时区日期的GMT时间戳
 *
 * @access  public
 * @param   int     $hour
 * @param   int     $minute
 * @param   int     $second
 * @param   int     $month
 * @param   int     $day
 * @param   int     $year
 *
 * @return void
 */
function local_mktime($hour = NULL , $minute= NULL, $second = NULL,  $month = NULL,  $day = NULL,  $year = NULL)
{

	/**
	 * $time = mktime($hour, $minute, $second, $month, $day, $year) - date('Z') + (date('Z') - $timezone * 3600)
	 * 先用mktime生成时间戳，再减去date('Z')转换为GMT时间，然后修正为用户自定义时间。以下是化简后结果
	 **/
	$time = mktime($hour, $minute, $second, $month, $day, $year) + MInterface::$time_offset;

	return $time;
}


/**
 * 将GMT时间戳格式化为用户自定义时区日期
 *
 * @param  string       $format
 * @param  integer      $time       该参数必须是一个GMT的时间戳
 *
 * @return  string
 */

function local_date($format, $time = NULL)
{
	if ($time === NULL)
	{
		$time = local_time();
	}
	elseif ($time <= 0)
	{
		return '';
	}

	return date($format, $time);
}


/**
 * 转换字符串形式的时间表达式为GMT时间戳
 *
 * @param   string  $str
 *
 * @return  integer
 */
function gmstr2time($str)
{
	$time = strtotime($str);

	if ($time > 0)
	{
		$time += MInterface::$time_offset;
	}

	return $time;
}

/**
 *  将一个用户自定义时区的日期转为GMT时间戳
 *
 * @access  public
 * @param   string      $str
 *
 * @return  integer
 */
function local_strtotime($str)
{
	/**
	 * $time = mktime($hour, $minute, $second, $month, $day, $year) - date('Z') + (date('Z') - $timezone * 3600)
	 * 先用mktime生成时间戳，再减去date('Z')转换为GMT时间，然后修正为用户自定义时间。以下是化简后结果
	 **/
	$time = strtotime($str) + MInterface::$time_offset;

	return $time;

}

/**
 * 获得用户所在时区指定的时间戳
 *
 * @param   $timestamp  integer     该时间戳必须是一个服务器本地的时间戳
 *
 * @return  array
 */
function local_gettime($timestamp = NULL)
{
	$tmp = local_getdate($timestamp);
	return $tmp[0];
}

/**
 * 获得用户所在时区指定的日期和时间信息
 *
 * @param   $timestamp  integer     该时间戳必须是一个服务器本地的时间戳
 *
 * @return  array
 */
function local_getdate($timestamp = NULL)
{
	/* 如果时间戳为空，则获得服务器的当前时间 */
	if ($timestamp === NULL)
	{
		$timestamp = time();
	}

	$local_time = $timestamp + MInterface::$time_offset;    // 转换为用户所在时区的时间戳

	return getdate($local_time);
}

?>